//package com.rds.task;
//
//import com.rds.entity.Place;
//import com.rds.entity.RoadWeighted;
//import com.rds.model.BMapResponseEntity.Navigation;
//import com.rds.model.BMapResponseEntity.Route;
//import com.rds.model.Coordinate;
//import com.rds.service.PlaceService;
//import com.rds.service.RoadWeightedService;
//import com.rds.utils.BMapApiUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.time.LocalDateTime;
//import java.util.List;
//
//@Component
//@Slf4j
//public class RoadWeightedTask {
//    @Autowired
//    private BMapApiUtil bMapApiUtil;
//    @Autowired
//    private RoadWeightedService roadWeightedService;
//    @Autowired
//    private PlaceService placeService;
//
//    //首次执行一次，之后每隔10分钟执行一次，使用cron表达式
//    //10秒执行一次
////    @Scheduled(cron = "* 0/10 * * * ?")
//    public void roadWeighted() {
//        log.info("开始执行道路权重任务");
//        //查出所有的地点
//        List<Place> list = placeService.list();
//        for (Place place : list) {
//            for (Place place1 : list) {
//                //延时0.5秒
//                try {
//                    Thread.sleep(500);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                Long originId = place.getId();
//                Long destinationId = place1.getId();
//                //如果是同一个地点，择距离为0，时间为0
//                if (originId.equals(destinationId)) {
//                    RoadWeighted roadWeighted = RoadWeighted.builder()
//                            .originId(originId)
//                            .destinationId(destinationId)
//                            .distance(0)
//                            .time(0)
//                            .updateAt(LocalDateTime.now())
//                            .build();
//                    roadWeightedService.save(roadWeighted);
//                    continue;
//                }
//                //调用百度地图API获取两地点之间的距离和时间
//                //获得两点之前的经纬度信息
//                Coordinate originCoordinate = new Coordinate(place.getCenterCoordinateLng(), place.getCenterCoordinateLat());
//                Coordinate destinationCoordinate = new Coordinate(place1.getCenterCoordinateLng(), place1.getCenterCoordinateLat());
//                //调用百度地图API获取两地点之间的距离和时间
//                Navigation navigation = bMapApiUtil.getNavigation(originCoordinate, destinationCoordinate);
//                List<Route> routes = navigation.getRoutes();
//                Integer distance = Integer.MAX_VALUE;
//                Integer time = Integer.MAX_VALUE;
//                //如果有路径信息，取第一条路径的距离和时间
//                if (routes != null && routes.size() > 0) {
//                    distance = routes.get(0).getDistance();
//                    time = routes.get(0).getDuration();
//                }
//                //保存到数据库
//                RoadWeighted roadWeighted = RoadWeighted.builder()
//                        .originId(originId)
//                        .destinationId(destinationId)
//                        .distance(distance)
//                        .time(time)
//                        .updateAt(LocalDateTime.now())
//                        .build();
//                roadWeightedService.save(roadWeighted);
//            }
//        }
//        log.info("结束道路权重任务");
//    }
//}
